home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / ai / fuzzy / token.s < prev   
Text File  |  1986-11-29  |  5KB  |  85 lines

  1. -------------------------------------------------------------------------------
  2. --                                                                           --
  3. --  Library Unit:  Token  --  Get token package                              --
  4. --                                                                           --
  5. --  Author:  Bradley L. Richards                                             --
  6. --                                                                           --
  7. --     Version     Date     Notes . . .                                      --
  8. --    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    --
  9. --       1.0     6 Feb 86   Initial Version                                  --
  10. --       1.1    25 Feb 86   All basic routines completed                     --
  11. --       1.2    13 Mar 86   Added reserved words.  Split Ada and Fuzzy       --
  12. --                            Prolog via conditional compilation             --
  13. --       1.3    22 May 86   Revised lots of Fuzzy Prolog stuff to make it    --
  14. --                            work; adding reserved words, etc..             --
  15. --       1.4    19 Jun 86   Use revised io package and data_def              --
  16. --       2.0    20 Jun 86   Token_type extracted into package Data_def       --
  17. --       2.05   13 Jul 86   Split into separate spec and body files          --
  18. --       2.1    21 Jul 86   Demonstration Version                            --
  19. --    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    --
  20. --                                                                           --
  21. --  Library units used:       io -- read source file and produce listing     --
  22. --                       listing -- insert messages in listing               --
  23. --                      data_def -- common data definitions                  --
  24. --                                                                           --
  25. --  Description:  This package reads the source file (via "io") and parses   --
  26. --     out individual tokens.  There are three defined types which calling   --
  27. --     routines must use.  Token_type defines the legal kinds of tokens      --
  28. --     which may be returned.  Token_record is a variant record (with a      --
  29. --     discriminant of token_type) which is used to hold tokens.  Finally,   --
  30. --     token_ptr is the access type to the dynamically allocated             --
  31. --     token_records.                                                        --
  32. --          This package must be initialized by calling start_token.  Then   --
  33. --     subsequent calls to get_token will return one token each.  Note       --
  34. --     that end-of-file is indicated by the special token "end_of_file."     --
  35. --                                                                           --
  36. --          Note that this package is designed to be used with multiple      --
  37. --     languages.  In order to share the code and ensure that generic        --
  38. --     changes are made to all versions, this package is kept in a master    --
  39. --     source file which contains conditional compilation directives         --
  40. --     for use by the Ada preprocessor "pp."                                 --
  41. --                                                                           --
  42. -------------------------------------------------------------------------------
  43. --                                                                           --
  44. --                           Package Specification                           --
  45. --                                                                           --
  46. -------------------------------------------------------------------------------
  47.  
  48. with data_def, io, listing; use data_def, io, listing;
  49. package token is
  50.  
  51.  
  52.     --
  53.     --  define the record and access types for tokens
  54.     --
  55.     type token_record (is_a : token_type) is
  56.       record
  57.     case is_a is
  58.       when identifier          => ident_name : name_ptr;
  59.       when variable            => var_name : name_ptr;
  60.       when reserved_word       => word : token_type;
  61.       when float_num           => fp_num : float;
  62.       when integer_num         => int_num : integer;
  63.       when character_lit       => char : character;
  64.       --
  65.       --  all other token types require no data other than the discriminant
  66.       --
  67.       when others              => null;
  68.       end case;
  69.       end record;
  70.     type token_ptr is access token_record;
  71.  
  72.     current_token : token_ptr;
  73.     unexpected_end_of_file : exception;
  74.  
  75.     procedure get_token;
  76.     procedure start_token(source_file, listing_file : in string);
  77.     procedure stop_token;
  78.  
  79.   private
  80.  
  81.     procedure skip_rest_of_token;
  82.     function valid_ending( char : character ) return boolean;
  83.  
  84. end token;
  85.